package com.jsl.action;

import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.PreDestroy;
import java.util.List;
import java.util.Map;

public class OtherInboundActionProxy extends BaseBean implements Action {
    private static final Logger log = LoggerFactory.getLogger(OtherInboundActionProxy.class);

    // 模块标识（与配置文件中的模块名对应）
    private static final String MODULE_KEY = "ncc";

    // 初始化当前模块的热更新管理器
    private static final HotSwapManager hotSwapManager = new HotSwapManager(MODULE_KEY);

    @Override
    public String execute(RequestInfo requestInfo) {
        log.info("AddOtherInbound推送NCC系统接口执行");
        // 通过管理器获取接口实例（自动获取最新版本）
        OtherInboundInterface instance = hotSwapManager.getInstance(OtherInboundInterface.class);
        return instance.execute(requestInfo);
    }

    /**
     * 暴露热更新触发方法（供外部调用）
     */
    public Map<String, List<String>> triggerHotSwap() {
        return hotSwapManager.triggerHotSwap();
    }

    @PreDestroy
    public void destroy() {
        log.info("项目模块热更新资源清理");
        // 若需要手动清理，可在此处添加逻辑
    }
}
